Die Kartenverwaltung speichert die sich im Umlauf befindenden Karten und gibt anderen Modulen Zugriff darauf.

\subsubsection{Gespeicherte Daten}

\begin{itemize}
    \item Karte:

    \begin{itemize}
        \item Kartennummer
        \item Gültigkeitsdatum
        \item Limit
        \item Inhaber (Verweis auf die Kundennummer)
        \item Public Key
        \item Zeitpunkt der letzten Änderung
        \item Geändert durch (Benutzername)
        \item Signatur der \KV{}
        \item Signatur der \TSA{}
    \end{itemize}
\end{itemize}

\subsubsection{Merkmale der physikalischen Kreditkarten}

\begin{itemize}
    \item Die Kreditkarten besitzen einen Magnetstreifen, auf dem die Kreditkartennummer gespeichert ist.

    \item Die Kreditkarten müssen weiters mit einem Chip (wie bei EMV-Standard) ausgestatten sein, welcher einen Private Key enthält. Die Software des Chips bietet eine Methode zum Überprüfen des PINs der Karte und eine weitere zur Signierung von Daten mithilfe des integrierten Private Keys an.
\end{itemize}

\subsubsection{Sicherheitsmaßnahmen}

\begin{enumerate}[resume*]
    \item \label{safechip} Der Chip der Kreditkarte muss physisch gegen Auslesen des Keys geschützt sein.
\end{enumerate}


\subsubsection{Angebotene Methoden}

\begin{itemize}
    \item \texttt{isValid}: Prüft, ob eine Kreditkarte gültig ist. Es wird die Kartennummer übergeben und \texttt{TRUE} (Karte ist gültig) oder \texttt{FALSE} (Karte ist abgelaufen) zurückgegeben. Karten laufen ab, wenn das Gültigkeitsdatum erreicht oder überschritten ist.

    \item \texttt{verifySignature}: Prüft, ob die Signatur eines Datenpaketes einer bestimmten Karte zugeordnet werden kann. Es wird die Kartennummer und das Paket übergeben und \texttt{TRUE} (Signatur ist gültig) oder \texttt{FALSE} (Signatur ist ungültig) zurückgegeben. Der Public Key zur Prüfung der Signatur wird aus der Datenbank ausgelesen. Der Public Key ist, wie alle anderen Daten, verschlüsselt und signiert gespeichert. Seine Signaturen müssen daher vor der Entschlüsselung ebenfalls überprüft werden. Bei der Prüfung jeglicher Signaturen muss die \CA{} bzw. die \TSA{} befragt werden, ob der zur Prüfung verwendete Public Key gültig ist.

    \item \texttt{lock}: Sperrt eine Kreditkarte. Die Nummer der Karte wird als Parameter übergeben. Als Antwort wird \texttt{TRUE} (Karte wurde gesperrt) oder \texttt{FALSE} (Karte war bereits gesperrt oder konnte nicht gesperrt werden) zurückgegeben.

    \item \texttt{getCardLimit}: Gibt das zur Kreditkarte gespeicherte Limit zurück. Die Kartennummer wird als einziger Parameter übergeben.

    \item \texttt{setCardLimit}: Ändert das Limit einer Karte. Als Parameter werden die Kreditkartennummer und das neue Limit übergeben. Es wird keine Antwort auf diese Anfrage zurückübermittelt.

    \item \texttt{getCardNumbers}: Gibt eine Liste von Kreditkartennummern eines bestimmten Kunden zurück. Die Kundennummer des Kunden muss bei der Anfrage übergeben werden.

    \item \texttt{insertCard}: Fügt eine Kreditkarte für einen Kunden hinzu. Dabei müssen als Parameter die Kundennummer/der Inhaber, das Limit und der PIN  der zu erstellenden Kreditkarte übermitteln. Die Methode gibt \texttt{TRUE} (Karte konnte eingefügt werden) oder \texttt{FALSE} (Fehler ist aufgetreten) zurück.

    \item \texttt{deleteCard}: Löscht oder sperrt eine Karte. Als Parameter muss die Kreditkartennummer übergeben werden. Die Karte wird dabei auf gesperrt gesetzt. Es wird \texttt{TRUE} (Karte wurde gelöscht) oder \texttt{FALSE} (Karte konnte nicht gelöscht werden) zurückgegeben.

    \item \texttt{getTransactions}: Liefert alle Transaktionen einer Karte zurück, als Parameter muss die Kreditkartennummer angegeben werden. Die Abfrage läuft über die Schnittstelle zur Transaktions-Verwaltung.
\end{itemize}


\subsubsection{Schnittstelle zum Kunden-Management}

\begin{itemize}
    \item Das \KM{} hat Zugriff auf alle angebotenen Methoden.
\end{itemize}

\subsubsection{Schnittstelle zur Transaktionsverwaltung}

\begin{itemize}
    \item Die \TV{} hat lediglich Zugriff auf die Methoden \texttt{isValid} sowie \texttt{verifySignature} und \texttt{getCardLimit}.
\end{itemize}